#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Core;
using Cephei.Core.Generic;
using Microsoft.FSharp.Core;
namespace Cephei.QL
{
    /// <summary> 
	/// ! \test application of direct and derived exchange rate is tested against calculations.
	/// </summary>
    [Guid ("7129C4E3-7030-4f95-A98C-3506B97416FC"),ComVisible(true)]
	public interface IExchangeRate 
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        /// <summary> 
		/// 
		/// </summary>
		 Cephei.QL.IExchangeRate Chain(Cephei.QL.IExchangeRate r1, Cephei.QL.IExchangeRate r2);
        /// <summary> 
		/// 
		/// </summary>
		 Cephei.QL.IMoney Exchange(Cephei.QL.IMoney amount);
        /// <summary> 
		/// 
		/// </summary>
		 Double Rate {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Cephei.QL.ICurrency Source {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Cephei.QL.ICurrency Target {get;}
        /// <summary> 
		/// 
		/// </summary>
		 QL.ExchangeRate.TypeEnum Type {get;}
    }   

    /// <summary> 
	/// ! \test application of direct and derived exchange rate is tested against calculations. Factory
	/// </summary>
   	[ComVisible(true)]
    public interface IExchangeRate_Factory 
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        /// <summary> 
		/// 
		/// </summary>
	    IExchangeRate Create (Cephei.QL.ICurrency source, Cephei.QL.ICurrency target, Double rate);
        /// <summary> 
		/// 
		/// </summary>
	    IExchangeRate Create ();
    }
}

